package com.tsp_tux.demo.Service;

import com.tsp_tux.demo.Entity.*;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.List;

/**
 * @author 沈育洋
 */
public interface ArticleService {
    /**
     * 通过ID获取Article
     *
     * @param id int aid
     * @return 可以直接返回
     */
    RespBean getArticle(int id);

    /**
     * 模糊搜索Article
     *
     * @param search String 搜索的字符串
     * @return 可以直接返回
     */
    RespBean searchArticle(String search);

    /**
     * @param uid   String 用户ID
     * @param state 文章状态
     * @return 根据用户id和文章状态获取文章列表
     * @author 周志伟
     */
    List<Article_List> getArticleByStateByUidAndState(String uid, int state);
    List<Article_List> getArticleByStateBySubname(String  subname);
    List<Article_List> getArticleByStateByUsername(String  username);
    List<Article_List> getArticleByStateByUidAndSid(String uid, int sid);
    List<Article_List_2> getFiveMark(String uid);
    /**
     * @param aid int 文章ID
     * @return List<Comments_List> 评论列表
     * @author 周志伟
     * 获取评论
     */
    List<Comments_List> getComments(int aid);

    /**
     * @param aid      int 文章ID
     * @param content  String 文章
     * @param parentId String 父评论ID
     * @param uid      String 用户ID
     * @param puid     String 父用户ID
     * @return 是否保存成功 true成功 false失败
     * @author 周志伟
     * 保存评论
     */
    int PreserveComment(int aid, String content, Integer parentId, String uid, String puid);

    /**
     * @param aid int 文章ID
     * @param uid String 用户ID
     * @return int 成功返回0，失败返回1，已经收藏返回2并且会取消收藏
     * @author 周志伟
     * 收藏
     */
    int ArticleAndUserCollect(int aid, String uid);

    /**
     * create by 周志伟
     * 点赞
     *
     * @param aid int 文章ID
     * @param uid String 用户ID
     * @return int 成功返回0，失败返回1，已经点赞返回2并且会取消点赞
     */
    int ArticleAndUserPraise(int aid, String uid);

    /**
     * create by 周志伟
     * 获取点赞数和收藏数
     *
     * @param aid int 文章ID
     * @return PraiseAndCollectNum 文章数据
     */
    PraiseAndCollectNum getDigital(int aid);

    /**
     * 根据uid获取最新的三篇博客
     * @author 刘海生
     * @param uid 学号/工号
     * @return 文章列表
     */
    RespBean getTop3Articles(String uid);

    /**
     *create by 周志伟
     * @param aid 文章id
     * @return 根据文章id获取文章列表
     */
    List<ArticleContent_List> getArticleByAid(int aid);
    /**
     *create by 张帅
     *
     * @return 前端发送请求，后端返回8条已发布的推荐文章信息（点赞数最高)
     */
    List<Article_List_1>  getCommendArtical1();
    /**
     * @param aid   String 文章ID
     * @return int 删除文章并返回状态信息，成功返回1，失败返回0
     * @author 童一凡
     */
    int deleteArticle(int aid);
    /**
     * @param keyword String 关键字
     * @return 搜索文章，返回文章信息
     * @author 童一凡
     */
    List<String> searchArticleByKeyword(String keyword);
    Article_List_1 searchArticleByKeyword2(String aid);

    /**
     * @param aid int 文章ID
     * @param uid String 用户ID
     * @return int 成功返回0，失败返回1，已经收藏返回2
     * @author 周志伟
     * 收藏
     */
    int getArticleAndUserCollectState(int aid, String uid);

    /**
     * create by 周志伟
     * 点赞
     *
     * @param aid int 文章ID
     * @param uid String 用户ID
     * @return int 成功返回0，失败返回1，已经点赞返回2
     */
    int getArticleAndUserPraiseState(int aid, String uid);

    /**
     * Author 周志伟
     * @param aid 文章id
     * return 文章综合评分。
     */
    Article_Evalue getArticleMarkByAid(int aid);
    /**
     * @param aid String 文章ID
     * @return int 修改文章状态并返回状态信息，成功返回1，失败返回0
     * @author 谢颖
     */
    int rebuildArticle(int aid);

    RespBean creatArticle(String uid,int aid,String title,String mdContent,
                          String summary,int sid,int state,String[] tags,int original,int atype);

    RespBean evaluateArticle(int aid,String uid,float mark);

    float getArticleScore(int aid);

    RespBean getMyCollect(String uid);

    RespBean getHighest3(String uid);
    RespBean checkArticleScore(String uid,int aid);

    List<DailyStatistics> getDailyNum();


}
